Student depression: https://www.kaggle.com/datasets/adilshamim8/student-depression-dataset
library(readr)
library(tidyr)
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.5.2
## Warning: package 'forcats' was built under R version 4.5.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ purrr 1.1.0
## ✔ forcats 1.0.1 ✔ stringr 1.5.2
## ✔ ggplot2 4.0.0 ✔ tibble 3.3.0
## ✔ lubridate 1.9.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(dplyr)
library(ggplot2)
library(lubridate)
library(gapminder)
library(plotly)
##
## Adjuntando el paquete: 'plotly'
##
## The following object is masked from 'package:ggplot2':
##
## last_plot
##
## The following object is masked from 'package:stats':
##
## filter
##
## The following object is masked from 'package:graphics':
##
## layout
# leer el csv
ds <- read.csv("./data/student_depression_dataset.csv",sep=",")
head(ds)
## id Gender Age City Profession Academic.Pressure Work.Pressure CGPA
## 1 2 Male 33 Visakhapatnam Student 5 0 8.97
## 2 8 Female 24 Bangalore Student 2 0 5.90
## 3 26 Male 31 Srinagar Student 3 0 7.03
## 4 30 Female 28 Varanasi Student 3 0 5.59
## 5 32 Female 25 Jaipur Student 4 0 8.13
## 6 33 Male 29 Pune Student 2 0 5.70
## Study.Satisfaction Job.Satisfaction Sleep.Duration Dietary.Habits
## 1 2 0 '5-6 hours' Healthy
## 2 5 0 '5-6 hours' Moderate
## 3 5 0 'Less than 5 hours' Healthy
## 4 2 0 '7-8 hours' Moderate
## 5 3 0 '5-6 hours' Moderate
## 6 3 0 'Less than 5 hours' Healthy
## Degree Have.you.ever.had.suicidal.thoughts.. Work.Study.Hours
## 1 B.Pharm Yes 3
## 2 BSc No 3
## 3 BA No 9
## 4 BCA Yes 4
## 5 M.Tech Yes 1
## 6 PhD No 4
## Financial.Stress Family.History.of.Mental.Illness Depression
## 1 1.0 No 1
## 2 2.0 Yes 0
## 3 1.0 Yes 0
## 4 5.0 Yes 1
## 5 1.0 No 0
## 6 1.0 No 0
dim(ds)
## [1] 27901 18
depresion_por_sexo <- ds %>%
group_by(Gender) %>%
summarise(
Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
) %>%
mutate(
Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
)
depresion_por_sexo_masculino <- depresion_por_sexo %>%
filter(Gender == "Male")
depresion_por_sexo_femenino <- depresion_por_sexo %>%
filter(Gender == "Female")
# Pie chart de varones deprimidos vs no deprimidos
plot_ly(depresion_por_sexo_masculino, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes Masculinos Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
# Pie chart de mujeres deprimidas vs no deprimidas
plot_ly(depresion_por_sexo_femenino, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes Femeninos Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
# Pie chart de porcentaje de estudiantes deprimidos por género
plot_ly(depresion_por_sexo, labels = ~Gender, values = ~Porcentaje_Deprimidos, type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Porcentaje de Estudiantes Deprimidos por Género',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
profesions <- ds %>%
group_by(Profession) %>%
summarise(Count = n())
profesions
## # A tibble: 14 × 2
## Profession Count
## <chr> <int>
## 1 'Civil Engineer' 1
## 2 'Content Writer' 2
## 3 'Digital Marketer' 3
## 4 'Educational Consultant' 1
## 5 'UX/UI Designer' 1
## 6 Architect 8
## 7 Chef 2
## 8 Doctor 2
## 9 Entrepreneur 1
## 10 Lawyer 1
## 11 Manager 1
## 12 Pharmacist 2
## 13 Student 27870
## 14 Teacher 6
ggplot(profesions, aes(x = reorder(Profession, -Count), y = Count)) +
geom_bar(stat = "identity", fill = "coral") +
labs(title = "Número de Personas por Profesión",
x = "Profesión",
y = "Número de Personas") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
depresion_por_ciudades <- ds %>%
filter(Depression == 1 & Profession == "Student") %>%
group_by(City) %>%
summarise(Numero_Estudiantes_Deprimidos = n()) %>%
arrange(desc(Numero_Estudiantes_Deprimidos))
depresion_por_ciudades
## # A tibble: 43 × 2
## City Numero_Estudiantes_Deprimidos
## <chr> <int>
## 1 Kalyan 928
## 2 Hyderabad 896
## 3 Srinagar 763
## 4 Vasai-Virar 738
## 5 Thane 673
## 6 Kolkata 649
## 7 Ludhiana 646
## 8 Lucknow 641
## 9 Ahmedabad 638
## 10 Patna 635
## # ℹ 33 more rows
ggplot(depresion_por_ciudades, aes(x = reorder(City, -Numero_Estudiantes_Deprimidos), y = Numero_Estudiantes_Deprimidos)) +
geom_bar(stat = "identity", fill = "steelblue") +
labs(title = "Ciudades con más Estudiantes Deprimidos",
x = "Ciudad",
y = "Número de Estudiantes Deprimidos") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
## Depresión por sexo en estudiantes
depresion_por_sexo <- ds %>%
filter(Profession == "Student") %>%
group_by(Gender) %>%
summarise(
Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
) %>%
mutate(
Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
)
depresion_por_sexo
## # A tibble: 2 × 6
## Gender Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 Female 7208 5133 12341
## 2 Male 9100 6429 15529
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
Hemos encontrado que la variable nivel de estudios tiene distintos valores, por lo que en el preprocesado deberemos abordar esto unificando unos valores categóricos con orden
depresion_por_nivel_estudio <- ds %>%
filter(Profession == "Student") %>%
group_by(Degree) %>%
summarise(
Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
) %>%
mutate(
Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
)
depresion_por_nivel_estudio
## # A tibble: 28 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprim…¹ Total
## <chr> <int> <int> <int>
## 1 'Class 12' 4303 1777 6080
## 2 B.Arch 870 607 1477
## 3 B.Com 853 653 1506
## 4 B.Ed 1018 846 1864
## 5 B.Pharm 427 382 809
## 6 B.Tech 655 497 1152
## 7 BA 321 278 599
## 8 BBA 406 289 695
## 9 BCA 818 614 1432
## 10 BE 333 279 612
## # ℹ 18 more rows
## # ℹ abbreviated name: ¹Numero_Estudiantes_No_Deprimidos
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
depresion_por_edad <- ds %>%
filter(Profession == "Student") %>%
group_by(Age) %>%
summarise(
Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
) %>%
mutate(
Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
)
depresion_por_edad
## # A tibble: 34 × 6
## Age Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <dbl> <int> <int> <int>
## 1 18 1216 371 1587
## 2 19 1100 460 1560
## 3 20 1579 658 2237
## 4 21 1166 557 1723
## 5 22 700 459 1159
## 6 23 1047 594 1641
## 7 24 1506 749 2255
## 8 25 1079 702 1781
## 9 26 663 491 1154
## 10 27 886 575 1461
## # ℹ 24 more rows
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
depresion_long <- depresion_por_edad %>%
mutate(Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos) %>% # opcional, ya la tienes
pivot_longer(
cols = c(Porcentaje_Deprimidos, Porcentaje_No_Deprimidos),
names_to = "Estado",
values_to = "Porcentaje"
) %>%
mutate(
Estado = recode(Estado,
Porcentaje_Deprimidos = "Deprimidos",
Porcentaje_No_Deprimidos = "No Deprimidos")
)
# Gráfico de barras apiladas
ggplot(depresion_long, aes(x = Age, y = Porcentaje, fill = Estado)) +
geom_col() +
labs(
title = "Porcentaje de estudiantes deprimidos por edad",
x = "Edad",
y = "Porcentaje (%)"
) +
scale_fill_manual(values = c("Deprimidos" = "red", "No Deprimidos" = "green")) +
theme_minimal()
depresion_por_horas_sueño <- ds %>%
filter(Profession == "Student") %>%
group_by(Sleep.Duration) %>%
summarise(
Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
) %>%
mutate(
Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
)
depresion_por_horas_sueño
## # A tibble: 5 × 6
## Sleep.Duration Numero_Estudiantes_Deprimidos Numero_Estudiantes_N…¹ Total
## <chr> <int> <int> <int>
## 1 '5-6 hours' 3513 2664 6177
## 2 '7-8 hours' 4362 2975 7337
## 3 'Less than 5 hours' 5354 2949 8303
## 4 'More than 8 hours' 3070 2965 6035
## 5 Others 9 9 18
## # ℹ abbreviated name: ¹Numero_Estudiantes_No_Deprimidos
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
depresion_por_nivel_estudio <- ds %>%
filter(Profession == "Student") %>%
group_by(Age) %>%
summarise(
Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
) %>%
mutate(
Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
)
depresion_por_nivel_estudio
## # A tibble: 34 × 6
## Age Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <dbl> <int> <int> <int>
## 1 18 1216 371 1587
## 2 19 1100 460 1560
## 3 20 1579 658 2237
## 4 21 1166 557 1723
## 5 22 700 459 1159
## 6 23 1047 594 1641
## 7 24 1506 749 2255
## 8 25 1079 702 1781
## 9 26 663 491 1154
## 10 27 886 575 1461
## # ℹ 24 more rows
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
depresion_por_nivel_estudio <- ds %>%
filter(Profession == "Student") %>%
group_by(Degree) %>%
summarise(
Numero_Estudiantes_Deprimidos = sum(Depression == 1, na.rm = TRUE),
Numero_Estudiantes_No_Deprimidos = sum(Depression == 0, na.rm = TRUE)
) %>%
mutate(
Total = Numero_Estudiantes_Deprimidos + Numero_Estudiantes_No_Deprimidos,
Porcentaje_Deprimidos = 100 * Numero_Estudiantes_Deprimidos / Total,
Porcentaje_No_Deprimidos = 100 * Numero_Estudiantes_No_Deprimidos / Total
)
depresion_por_nivel_estudio
## # A tibble: 28 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprim…¹ Total
## <chr> <int> <int> <int>
## 1 'Class 12' 4303 1777 6080
## 2 B.Arch 870 607 1477
## 3 B.Com 853 653 1506
## 4 B.Ed 1018 846 1864
## 5 B.Pharm 427 382 809
## 6 B.Tech 655 497 1152
## 7 BA 321 278 599
## 8 BBA 406 289 695
## 9 BCA 818 614 1432
## 10 BE 333 279 612
## # ℹ 18 more rows
## # ℹ abbreviated name: ¹Numero_Estudiantes_No_Deprimidos
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
# Grafico de barras del numero de estudiantes deprimidos por nivel de estudio
ggplot(depresion_por_nivel_estudio, aes(x = reorder(Degree, -Numero_Estudiantes_Deprimidos), y = Numero_Estudiantes_Deprimidos)) +
geom_bar(stat = "identity", fill = "purple") +
labs(title = "Número de Estudiantes Deprimidos por Nivel de Estudio",
x = "Nivel de Estudio",
y = "Número de Estudiantes Deprimidos") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# pie chart de cada nivel de estudio con porcentaje de estudiantes deprimidos
# Class 12
depresion_por_class12 <- depresion_por_nivel_estudio %>%
filter(Degree == "'Class 12'")
depresion_por_class12
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimi…¹ Total
## <chr> <int> <int> <int>
## 1 'Class 12' 4303 1777 6080
## # ℹ abbreviated name: ¹Numero_Estudiantes_No_Deprimidos
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_class12, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de Class 12 Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#B.Arch
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "B.Arch")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 B.Arch 870 607 1477
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de B.Arch Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#B.Com
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "B.Com")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 B.Com 853 653 1506
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de B.Com Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#B.Ed
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "B.Ed")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 B.Ed 1018 846 1864
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de B.Ed Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#B.Pharm
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "B.Pharm")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 B.Pharm 427 382 809
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de B.Pharm Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#B.Tech
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "B.Tech")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 B.Tech 655 497 1152
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de B.Tech Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#BA
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "BA")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 BA 321 278 599
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de BA Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#BBA
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "BBA")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 BBA 406 289 695
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de BBA Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#BCA
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "BCA")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 BCA 818 614 1432
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de BCA Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#BE
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "BE")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 BE 333 279 612
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de BE Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#BHM
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "BHM")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 BHM 506 416 922
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de BHM Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#BSc
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "BSc")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 BSc 521 364 885
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de BSc Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#LLB
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "LLB")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 LLB 356 315 671
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de LLB Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#LLM
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "LLM")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 LLM 258 223 481
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de LLM Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#M.Com
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "M.Com")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 M.Com 389 344 733
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de M.Com Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#M.Ed
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "M.Ed")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 M.Ed 415 406 821
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de M.Ed Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#M.Pharm
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "M.Pharm")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 M.Pharm 313 268 581
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de M.Pharm Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#M.Tech
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "M.Tech")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 M.Tech 521 501 1022
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de M.Tech Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MA
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "MA")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 MA 288 254 542
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de MA Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MBA
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "MBA")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 MBA 303 259 562
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de MBA Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MBBS
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "MBBS")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 MBBS 403 292 695
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de MBBS Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MCA
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "MCA")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 MCA 557 485 1042
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de MCA Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MD
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "MD")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 MD 296 273 569
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de MD Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#ME
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "ME")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 ME 98 87 185
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de ME Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MHM
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "MHM")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 MHM 99 92 191
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de MHM Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#MSc
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "MSc")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 MSc 675 511 1186
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de MSc Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#Others
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "Others")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 Others 21 14 35
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de Others Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
#PhD
depresion_por_barch <- depresion_por_nivel_estudio %>%
filter(Degree == "PhD")
depresion_por_barch
## # A tibble: 1 × 6
## Degree Numero_Estudiantes_Deprimidos Numero_Estudiantes_No_Deprimidos Total
## <chr> <int> <int> <int>
## 1 PhD 285 236 521
## # ℹ 2 more variables: Porcentaje_Deprimidos <dbl>,
## # Porcentaje_No_Deprimidos <dbl>
plot_ly(depresion_por_barch, labels = ~c('Deprimidos', 'No Deprimidos'),
values = ~c(Numero_Estudiantes_Deprimidos, Numero_Estudiantes_No_Deprimidos), type = 'pie',
textposition = 'inside',
textinfo = 'label+percent') %>%
layout(title = 'Estudiantes de PhD Deprimidos vs No Deprimidos',
xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
# Scatterplot para ver la relación entre el rendimiento académico, la satisfacción académica y la depresión
# Primero, crea la variable Depresion_bin
df_procesado <- ds %>%
dplyr::mutate(
Depresion_bin = ifelse(!is.na(Depression), as.character(Depression),
ifelse(!is.na(Depression.Score) & Depression.Score >= 10, "1", "0")
),
Depresion_bin = factor(Depresion_bin, levels = c("0", "1"), labels = c("No", "Sí"))
)
# Luego, crea el gráfico (en un bloque SEPARADO)
ggplot(df_procesado, aes(x = CGPA, y = Study.Satisfaction, color = Depresion_bin, shape = Depresion_bin)) +
geom_point(size = 3, alpha = 0.8, na.rm = TRUE) +
scale_color_manual(values = c("No" = "#1f77b4", "Sí" = "#d62728")) +
scale_shape_manual(values = c("No" = 16, "Sí" = 17)) +
labs(
title = "CGPA vs Satisfacción según Depresión",
x = "CGPA",
y = "Study Satisfaction",
color = "Depresión",
shape = "Depresión"
) +
theme_minimal()